package uk.co.q3c.deplan.server.util.validation.rules;

import uk.co.q3c.deplan.server.util.validation.ValidationResult;

public interface ValidationObjectRule extends ObjectRule {
	/**
	 * An object rule operates across multiple properties in an object. Related
	 * to {@link ValidationPropertyRule}, but object rules are kept separate as
	 * they only get called when a whole object is being checked.
	 * 
	 * @param valuer
	 * @param vr
	 * @return the result of the validation, with
	 *         {@link ValidationResult#isValid()} set appropriately
	 */
	public abstract ValidationResult validate(PropertyValuer valuer, ValidationResult vr);

}
